#@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED228 FREE SECTORS COPYING---D1:DISKFIX.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u Atari: 232 PC: DATA OUT 11\ 14 T} DATA IN 5 Ĵ > 2 (3) Green / U} Black 4.7K /\/\/ +5 volts 232 Data in V} 12 / 13 DATA OUT 3 < 3 (2) Orange W}  \ White shottky diode 232 X} COMMAND 10\ 7 R.I. 7 ij >Y} 9 (22) Violet / Green Z} 232 spare section 9 /8 RS232 to TTL < [} \ SIO2PC SCHEMATIC pg 1 of 3 2 to TTL < \ Atari: PC: GROUND ]} Ground 6 5 (7) Black ^} + Red * _} Ŀ Ŀ1 15 6 4 + + `}Ŀ * * MAX-232 or 5 a} ICL-232 0.1uF disc b}3 16 + 2 * c} d} * 22uF electrolytic +5 Volts 10 e} Blue SIO2PC SCHEMATIC Page 2 of 3 Pin #'s @ PC are for 9 pin b f}y Nick Kennedy except (#) for 25 pin. C Page 2 of 3 Pin #'s @ PC are for 9 pin b :NOTES: (THIS IS THE NEW "ONECHIP VERSION" OF SIO2PC.) There is one integrated circuit, all of the little triangle symbols h}belong belong to it. The 232 sections convert TTL logic (Atari) to RS232 logic (PC) levels and vice versa. Atari SIO coi}nnector pin #'s are given on the left. The colors are what I find when I cut a standard SIO cable in half. The pin #'s on j}the right are for the PC's serial port connector. The colors are arbitrary. For some troubleshooting, here's what I find wk}hen the interface is plugged into the Atari but not the PC: (with respect to ground) Pin 2 of PC connector: -9.4 volts (apl}prox) Pin 9 of PC connector: +9 volts; Pin 2 of 232: +10 volts; Pin 6 of 232: -10 volts; Pin 16 of 232: +5 volts Pin 15 m}of 232: 0 volts Ŀ 1 2 3 4 5 2 4 6n} 8 10 12 WARNING: BUILD AND USE THIS 6 7 8 9 1 3 5 7 9 11 13 DESIGN AT YOUR OWN RISK! o} View of the rear View of the SIO ACCEPT ALL RESPONSIBILITY OR of the DB-9F connector jack on the Atari p}DO NOT BUILD THE INTERFACE for the serial port of console. OR RUN THE SOFTWARE! the PC. q} r} SIO2PC SCHEMATIC pg 3 of 3 7 SIO2PC: An Atari to PC Interface System by Nick Kennedy D I S C L A I M E R I have tried to ensure that my st}oftware is free of harmful defects (bugs) and of viruses. However, either could slip through my defenses. Use the softwu}are at your own risk. Similarly, I believe my hardware design to be in accordance with good practice, and I have a number v}of satisfied users. However, wiring errors, errors in my design, and configuration differences are possible and I cannotw} guarantee that these problems will not lead to damage to your equipment or software or other unforeseen damages. Use at x}your own risk. Furthermore, if you choose to construct my interface yourself, you must be experienced with electronic buily}ding techniques. Even if you are experienced, you could burn or cut yourself or experience other damage or injury, for wz}hich you must assume responsibility. I consider the SIO2PC system to be a service to the Atari user's community. Altho{}ugh I accept shareware contributions, and do make a charge for assembling interfaces or kits, I still consider my efforts t|}o be a hobby and a service. IF YOU HAVE SENT ME ANY PAYMENT FOR ANY SOFTWARE, KIT, OR ASSEMBLED INTERFACE AND DO NOT W}}ISH TO ASSUME FULL RESPONSIBILITY FOR USE OF OR CONSTRUCTION OF THESE ITEMS, YOU MAY RETURN THEM TO ME AND I WILL REFUND ~}YOUR MONEY. IF YOU ARE CONSTRUCTING THE INTERFACE AND CANNOT VERIFY THE ADEQUACY OF THE DESIGN ON YOUR OWN, SEEK THE A}DVICE OF ONE COMPETENT IN ELECTRONICS. OTHERWISE, DO NOT ATTEMPT TO BUILD AND USE THE INTERFACE. DON'T USE THE SIO2PC O}N COMPUTER SYSTEMS USED FOR COMMERCIAL PURPOSES OR FOR CRITICAL APPLICATIONS. INTRODUCTION Greetings Atari and PC us}ers! SIO2PC is now a "Shareware" product. If you know little or nothing about the system, let me give you a rundown. A s}eparate text file, SIOINSTR.TXT, gives more detailed information on running the system and describes its features. SIO2P}C is a hardware interface and software utility package to allow storage of your Atari files on your PC's hard and floppy di}sks, file conversions in both directions, and Atari printer output redirection to your PC's printer, screen, or file. } FEATURES: Create 1 to 4 virtual Atari disks on your PC. Virtual disks can be ramdisks or physical file access disks; d}isk images can be up to 65525 sectors in size. Save Ramdisks to PC hard or floppy disks. Boot from the PC. Real drive} not needed to start-up. Create Single or Double density ram-drives. No special Atari software patches. Use your favori}te DOS. Almost twice as fast as an Atari 810 drive. Co-exists in the Atari daisy chain with "real" drives. Software} written in assembler: Compact and Fast. Compatible all the way down to the hardware level - CIO, SIO, even direct hardw}are calls to drives will work. Print-Thru mode sends your Atari's printer bound output to your PC's Printer, Screen, or} file. File Conversion: Convert and transmit PC files to Atari, or Atari files to PC files. Won't endanger your PC's }hard disk. Your Atari disk images are stored as ordinary PC files. No direct sector writes used. Status line shows you e}xactly what your Atari is telling your disk drives: drive number, command, and sector number. HARDWARE REQUIREMENTS: }SIO2PC connects any PC compatible computer to any of the Atari 8 bit computers (400, 600, 800, 800XL 130XE). The interfa}ce between your PC's serial port and your Atari's SIO port requires a simple interface. It uses two IC's and a few capacito}rs and can be built on a 2" X 3" prototype board. If you are handy with a soldering iron, read the BUILD_IT.DOC file on y}our disk. It gives complete instructions, including addresses of parts suppliers. If you wish, I'll build one for you, or} provide you a kit of all parts with drawings and detailed instructions. See BUILD_IT.DOC. HISTORY: SIO2PC has been }over 3 years in the making. Before I got my PC, I considered my alternatives for my trusty Atari 800. Should I invest in an} adapter and hard disk for the Atari? I realized that the huge PC market made an entire PC with hard drive almost as chea}p as adding a drive to my Atari. So why not do both? The PC could store my Atari programs (get rid of that huge pile of f}loppies), and I'd have a new computer to boot! The project has worked out better than I could have imagined. The PC is a }great computer - in some areas. In areas where it is weak, the Atari still shines. Curing the Atari's mass storage weakness} makes it even better. SHAREWARE INFO: As you no doubt know, Shareware is a system which allows you to receive fre}ely distributed software, and pay for it if you find it useful. If you build the interface and find that the system is usef}ul, I request the modest sum of $10 for the design and software. If you choose to buy the kit or assembled interface from} me, no additional payment for the software is expected. Either way, registered users may upgrade to the latest revision }by sending a disk sized SASE and $5.00. Your suggestions will be considered for future revisions. So far, I have always bee}n able to personally respond to questions and problem reports. READ ALL ABOUT IT: Don't you hate to write off for a }shareware program that looks good in the ad, only to find an endless README file describing the limitless complexities of} the package? Now that I'm on the creating end of that particular method of information overload, I can see how documenta}tion files just grow... But - SIO2PC is a simple menu driven program which can, I believe, be mastered without instructions}. So, skim through the rest of this file and the other .DOC files for tidbits, and return only if you have problems or sp}ecific questions after you get your system going. Of course, if you decide to build it yourself, you will want to read BU}ILD_IT.DOC carefully. Also, go ahead and run SIO2PC.COM and play with the menu options a bit, even without the interface. I}t won't hurt anything. Note: This DOC file gives some problem resolution information, technical information, and more inf}ormation on file transfer features. For a more concise user's guide to the program, see the SIOINSTR.DOC file. A NOTE} ON A RELATED HARDWARE DEVELOPMENT Recently, an SIO2PC user told me he was developing a hardware project which would all}ow him to type on the PC and have the keystrokes transmitted to the Atari via a PC parallel port and custom Atari interface}. The system also comminicated joystick positions, START, SELECT, OPTION, and SYSTEM RESET button status to the Atari - }AND allowed turning the Atari on and off remotely, and turning the Atari's cartridge on and off. His idea was to tuck th}e Atari away, into a desk drawer or something, and do everything from the PC's keyboard. He asked me to write to softwar}e for this project and integrate it into SIO2PC, which I have done. The hardware is more complicated than an SIO2PC, hav}ing 8 or 10 chips and requiring internal installation in the Atari. If this sounds interesting to you, I'd be glad to send} you the schematic and a version of SIO2PC which includes the control functions for this modification. If you'd like to }contact the designer of the interface, he is Carl Mangaroni, 15764 Midwood Drive Suite 5, Granada Hills CA 91344 phone 8}18-363-1037. TECHNICAL INFORMATION ON SIO2PC SIO2PC is 100% written in PC assembly language. REMOTE.OBJ and FILE2P}C.OBJ are written in 6502 assembly language. MAKADISK.EXE is written in 'C'. SIO2PC recognizes the basic SIO bus command}s: READ SECTOR, WRITE SECTOR, PUT SECTOR, STATUS, FORMAT, FORMAT 1050 1.5 DENSITY. Because it works at this elementar}y level, it should work with any DOS and with non-DOS disk loader programs. You can also make boot disks (without DOS) an}d boot them from the PC. SIO2PC uses only MS-DOS calls to do file I/O on the PC. Because there are no direct sector writ}es, etc., SIO2PC won't trash your PC disks. Just use the right path/filename when doing writes. SIO2PC uses file handles}, so I assume it will require MSDOS or PCDOS 2.0 or later. SIO2PC redirects the timer 0 interrupt for it's timing purpos}es. This is the timer which supplies the BIOS its "timer tick", 18 times per second, 55 milliseconds per tick. SIO2PC als}o directly reads the timer as it is counting down in a routine for more fine timing (the microsecond level). If your PC d}oesn't use the standard timer chip (or compatible) with standard port addresses, there could be problems. Note: Most PC Clo}nes are HIGHLY hardware compatible. SIO2PC gets the port address for the specified COM port from bios data area words }at 040:0000, 040:0002, 040:0004, 040:0006 for COM 1,2,3, and 4. I've found out that the POST routine typically doesn't set} up the addresses for ports 3 & 4. Therefore, version 1.01 will use default port addresses 03F8, 02F8, 03E8, 02E8 for COM} 1 - 4 if it finds a zero in the BIOS data area word. If you know your port addresses to be other than this, a third opti}on is now available. Use your computer's documentation to find the base address, and use SIO2PC's "E" command to enter the} addresses directly. REMOTE CONTROL PROGRAM: The Atari serial bus reserves device ID's 31 - 38 hex for disk drives 1 }thru 8. I have used ID #39h for the remote control function. When the SIO2PC program finds this ID # in a command frame, }along with a Write Sector command, it expects to receive one sector (128 bytes) containing a command string. It then acts} on the string as if it were a command tail from the DOS command line. Any error, or the Atari EOL character, will termin}ate command processing and flush the line of any further commands. It is best to end the string with a space as a delimit}er, especially if your command ends in a pathname, else your PC may pause waiting for input or an ENTER keystroke. A REV 2.}1 change added this function to the REMOTE process: When DEVID = 039h and DCOMND = 'R', the SIO2PC sends a 128 byte data }frame to the Atari containing the DISK status information string shown on the screen. The string sent depends on the cont}ents of DAUX1 which must contain 1 - 8 for disks 1 - 8. This function allows REMOTE.OBJ on the Atari to update the user a}s to the status of the ramdisks, before and after the execution of the remote function. In this way, the user can see if hi}s remote command went to error free completion. In some cases, the PC may be busy carrying out the command when the data }request is received. For example a command to write a ramdisk out to a floppy disk may take 10 seconds or so. Therefore, }REMOTE.OBJ tries 3 times, pausing 4.25 seconds between retries, before giving up on getting the information. FILE2PC PR}OGRAM: The FILE2PC program also uses its own bus ID as a trigger for the FILE2PC program. ID# 03Ah puts the program int}o File Transfer mode. The Atari (running FILE2PC) always asks for Status of device 03Ah before putting a sector. (Only St}atus and Write are recognized by device 03Ah.) If the first status byte (of 4) is normal (010h), then the PC is ok for th}e transfer mode. If it is 0FFh, then the Atari will abort because the PC has encountered an error. The process works like t}his: The Atari gets Status, then, if OK, it sends a sector to the PC. The PC assumes that this sector contains the pathna}me of the destination file, terminated in an ATASCII EOL. The Atari pauses 4 seconds while the PC attempts to create the }file. (Note, any existing file of the specified pathname will be overwritten.) After the Atari gets another good status, it} starts sending sectors of file information. The AUX bytes, which usually carry sector # information, communicate th}e following to the PC: AUX1 = 0: Full sector, 128 bytes AUX1 = 1: Last sector, AUX2 contains the byte count AUX1 = 2: }Atari encountered an error, abort process. As I said, the Atari asks the PC for Status after every write. STRUCTURE O}F AN SIO2PC ATARI DISK IMAGE: It's extremely simple. There is first a 16 byte header with the following information: }WORD = special code* indicating this is an Atari disk file WORD = size of this disk image, in paragraphs (size/16) WORD = s}ector size. (128 or 256) bytes/sector WORD = high part of size, in paragraphs (added by REV 3.00) SPARES 8 (ten) unused (sp}are) header bytes (contain zeroes) After the header comes the disk image. This is just a continuous string of bytes, wit}h the first 128 bytes being the contents of disk sector 1, the second being sector 2, etc. * The "code" is the 16 bit su}m of the individual ASCII values of the string of bytes: "NICKATARI". If you try to load a file without this first WORD, }you get a "THIS FILE IS NOT AN ATARI DISK FILE" error message. Try it. USING RAMDISKS: SIO2PC uses, or can use, the P}C's hard or floppy disks to store Atari disk information. However, to give maximum speed, the disk information can be buf}fered via a ramdisk set up in the PC's ram space. When the Atari reads/writes its SIO2PC "disks", it is actually communicat}ing with the ramdisks in the PC's memory. The user can choose to load a ramdisk image or save one back to physical disk a}t any time via menu selection. For files too large to be installed as ramdisks, file access to the disk image is used. } TIMING INFORMATION: The Atari SIO2PC bus protocol specifies minimum and maximum times between Atari commands and disk} drive's responses. The minimums give the Atari time to get ready to take the data from the bus if it has to do some othe}r work in the interim. The maximums let the Atari decide that the peripheral isn't ever going to answer and it will give a }"time out" error. I have found that the system is very flexible and forgiving. I have used wide variations and still had }a workable system. But for one guy (you know who you are, Joe!) or maybe two, I've made this menu to allow you to experim}ent with different values. The system goes through this little dance of command - acknowledge - data - acknowledge - comple}te, etc with timings in between. In addition to these times inside the bus frame, I've made a couple more (normally zero)} time delays available. First: On a serial bus, data is normally sent continuously, with no time (except start and stop }bits) between bytes. Now you can experiment by adding some time here. (My system slowed down but still ran normally.) S}econd: Some publications say that some UART (serial) chips can't stand to be addressed as fast as some PC's are capable of }addressing them. I already had a bit of time delay in there, but now you can add some more. The time delays work like thi}s: Each unit is 850 nano-seconds which is almost 1 micro-second. (Multiply units by .85 to get micro-sec.) (Exception: th}e value for the printer delay is in 1/18ths of a second.) Also, you must enter the units as a 4 digit hex number. Don't pan}ic, it's easy. Here are some conversions: DECIMAL HEX 0005 0005 0010 000A 0050 0032 0100 0064 0250} 00FA 0500 01F4 0750 02EE 1000 03E8 2000 07D0 The timing menu gives default values you can use as a star}ting point. If you want to see the menu updated with your choices, an item is available from the menu (choose #8). One p}roblem with the TIMINGS menu is that it can't be addressed from the command line tail, so if your system does need non- sta}ndard timings, you have to set them up manually, each time you run the program. Not any more, Joe! Here's a procedure to }permanantly alter your program: This procedure uses DOS's little utility "DEBUG," because everyone has it. But you could} use NORTON or similar if you want. I moved the timing values to the front of the program and put an ASCII string in front } of it to make it easy to spot. Try this: Get into the directory containing SIO2PC.COM. On the DOS command line, type D}EBUG SIO2PC.COM . Now you see a hyphen, which is the DEBUG prompt. Now, type D . A table of hex numbers app}ears. On the left is the corresponding SEGMENT:OFFSET address for the first entry of each line. On the right is the corresp}onding ASCII (text) representation of the hex bytes. You notice that my little flag, "TIME DELAY VALUES: T1-T8, 2 BYTES P}ER ENTRY:" takes you up to the line starting with offset :0130. That line contains the timing values and looks like this:} ????:0130 ?? ?? ?? 64 00 B0 04 2C-01 etc. Here's the slightly tricky part: Each of those 2 digit hex numbers is a byte. } But each timing value is a WORD (2 bytes). And the PC stores words as lower part first. So the values are: T1 = 0064, T2 }= 04B0, T3 = 012C, etc. The good part is, you don't need to worry about all this junk, we're gonna fix it in a very e}asy way. If you have been following me and are now in DEBUG, get out of it by typing Q . Now, I recommend that you} copy SIO2PC.COM onto a floppy because it's a little scary using DEBUG to write to one's hard disk. Ok, you've done that an}d you have the floppy in drive A:. Get into A: by typing A: . Now, type DEBUG SIO2PC.COM . Give the "GO" (r}un) command by typing G . SIO2PC runs from the floppy. First give it a port number, then go to the "A" menu and ch}ange the timings values to those you have found to work on your system. Now, leave the timings menu and QUIT SIO2PC. You }will see by the hyphen that you are back in DEBUG. Type W and the program will be written back to the disk file. }Quit DEBUG with Q . Now run SIO2PC without DEBUG, and call up the timings menu again. You will see that the DEFAUL}T column stayed the same but the CURRENT values are now permanently altered. Hey, I didn't know that DEBUG could be so usef}ul, did you? NOTE: You should get a message saying program changed, possible virus. Just choose to write a new CRC and }the program will be fixed. DOUBLE DENSITY: The Atari expects the first 3 sectors on a disk to be single density. This }is necessary if you are to be able to boot from the disk. SIO2PC uses this format for its double density mode. FORMATS} vs DISK SIZES: I generally haven't restricted these things, but recommend the following: Use 143K size only for "enhanc}ed" or "1.5" or "DOS 2.5" density. The 183K size was created for double density. A lot depends on your DOS. Some DOS's ca }n figure out the actual size of a disk, others may assume a default. MYDOS is pretty smart. SPARTADOS probably is also. As  }of REV 3.00, SIO2PC responds to "get" and "set" configuration commands, and also allows you to select any size disk you w }ant by specifying the number of sectors. As a result of changes made in REV 3.00 and beyond which allow HUGE disk imag }es, I now have additional information to present on disk sizes: File Access and BIG disks The biggest change is the a }ddition of file access to disk images. Since this type of access doesn't require setting up ramdisks, the disk image size }isn't limited by available ram. You may choose the size of your disk images using new size choice #5. You specify the s}ize in sectors. If you're interested in what this means in kilobytes, you can figure it from the fact that a sector is 1}28 bytes for single density disks and 256 bytes for double density. Remember the status line field that shows 'W' if you'v}e written to a ramdisk but not saved it? (And 'N' if the file has been saved.) For direct file access type disks, this }field will contain an 'F'. Note that you can force the system to use file access, even when there is enough ram for a ra}mdisk. You do this by following the filename by "/P" for physical file access. Don't put a space between the filename and }the "/P". The "P" will appear on your status line. (The "/" won't.) Concerns about Speed I was concerned that the ov}erhead of using DOS and having physical disk accesses might slow the system down. On my two PCs, this hasn't been a prob}lem when using hard drives. I use disk caches on both systems and can't tell any difference between "ramdisk" and "file ac}cess" speed. With a floppy disk, my fears were justified. Access was slow enough that the Atari would time out and gene}rate errors. But, when I installed a disk cache, floppy disk access worked fine too. Some disk caches don't support flo}ppies. Smartdrive (supplied with DOS 5 and WINDOWS) doesn't. I used one called LIGHTING. It worked fine using convention}al memory while Smartdrive continued to run using extended memory. Get/Set Configuration Even after I first made some} BIG disks, MYDOS 4.5 still couldn't figure out that they were bigger than a standard 810 or 1050 disk. The standard Ata}ri SIO protocol doesn't include a means for the drive to tell the Atari what it is capable of (except in a very limited way}). I found that I had to implement the extended SIO commands for Get and Set Configuration so MYDOS would realize the ac}tual size of the disk. MYDOS does some of this automatically (reads configuration on bootup). But I found that I had to} explicitly do this in sequence so MYDOS would realize the disk size: Create the new (blank) disk image. Use the Set Co }nfiguration command, answering questions as follows: Configurable? Yes. High Capacity? Yes. Number of Sector? xxxx. D!}o this before formatting. Format the new disk image. Actually, SIO2PC doesn't do anything with the Set Configuration "}command other than acknowledge it. But it lets MYDOS know that the disk is capable of more sectors than a standard disk. #}The program WAS going to also warn you if you tried to set the wrong density. But it turns out that MYDOS always tries t$}o set high density when you answer "Yes" to "High Capacity Drive?". This doesn't cause a problem though: single density %}still works OK. I'm describing MYDOS because it's what I use. YOUR Atari DOS may have its own quirks with regard to large&} drives. MYDOS can become confused when you use the SIO2PC Swap Disk I.D.s command. MYDOS associates a certain disk numb'}er with a certain configuration. You may have to uninstall and reconfigure the drive with MYDOS when you swap disks of d(}ifferent types. Formatting With regard to formatting, it can take a long time with a BIG disk image, especially on a )}floppy. SIO2PC sets a flag when you first create the disk, to tell itself that the disk image is already blank. So, when *}you format it, the program doesn't bother clearing the disk. This saves a lot of time. After you write to the disk, the+} flag is cleared. Then, formatting includes clearing the entire disk image file. This could cause the Atari to time out ,} and not realize the format was successful. So you may want to avoid formatting "used" disk images. I can't think of a re-}ason you'd want to. (CREATING a new disk image can take a while too, but the Atari isn't involved in this process, so it.} won't get impatient.) I may improve the program to speed up this process if it's a problem. But creating new BIG disks/} will probably be an infrequent operation for most of us. *** NOTE: In a "rev 3.00 and 1/2" modification, I have taken a b0}ig step toward curing the slow formatting problem. Instead of writing blank sectors one at a time, I now write zeroes in1} blocks of 4K at a time, dividing the number of DOS calls by 32. This only works if there is at least 4K of free ram. Ot2}herwise, formatting will still work slowly, as described above. Note that you need to be a bit more careful when format3}ting file access disks. With ramdisks, you could always choose to not save the formatted disk image, so your original wa4}s safe. With file access, formatting actually clears your disk image file. Another addition with this revision is that 5}you can now number your disks as 1 - 8 instead of 1 - 4. Incidentally, you may wonder why your old 92K and 143K disks ar6}e now 90K and 140K. This has to do with the difference between a kilobyte as 1000 bytes and a kilobyte as 1024 (2^10) by7}tes. Revision 3.00 divides the disk size in bytes by 1024 to establish the disk size. File Access: How it works & tips8} on efficiency It's pretty simple. MS-DOS maintains a pointer into open files which can be set by the program. SIO2PC m9}aintains a corresponding pointer to the next Atari sector. When SIO2PC receives a read or write sector request from the A:}tari, it calculates the file offset from the sector number. It compares this to its record of where the pointer is now. If;} they differ, it asks DOS to point to the new location. Then it asks DOS to read or write 128 (or 256) bytes and increme<}nts its internal sector pointer by one, since DOS's pointer will now be at the next 128 or 256 block of the file. As you=} can see, if the Atari asks for sectors sequentially the pointer automatically moves along in step and no separate requests>} to reposition the pointer are needed. This is a good reason to try to keep your disk images unfragmented. Actually, it?}'s possible to have things DOUBLY fragmented: fragmented Atari disk images and fragmented PC disks. To avoid Atari fragm@}enting, you should first put files on the disk which you won't be deleting or changing: DOS, games, application programs. A}Last, put on any stuff that will change: data files, text files, etc. If you suspect your disk is fragmented it's easy tB}o undo. Just do a file copy (*.*) from the fragmented disk image to a newly created and formatted blank disk image. MC}ORE DISK CONFIGURABILITY: I've heard lots of reports about the inability to format certain disk image sizes. My adding D}the "get configuration" and "send configuration" functions in Rev 3.00 in some cases seemed to make matters worse. I'm nE}ow getting into an area where the specific DOS one uses makes a difference. So my treasured concept of "DOS independence" F}of SIO2PC is going out the window. The problem is this: How can the system tell the Atari exactly what size and type ofG} disk it is emulating? The 12 byte configuration table exchanged via the GET/SEND CONFIGURATION commands would seem to bH}e the answer. Unfortunately, both MYDOS and SPARTADOS admit to ignoring most of the information exchanged. The variableI}s are: SINGLE/DOUBLE DENSITY: 128 or 256 bytes/sector SINGLE/DOUBLE SIDED DISK NUMBER OF TRACKS/SIDE: TYP: 35, 40, 77, 8J}0 expected NUMBER OF SECTORS/TRACK: TYP: 18 or 28 expected The MYDOS doc indicates that it likes to consider the disk tK}o be one huge track containing all the sectors. This seems to work pretty well for SIO2PC. SPARTADOS evidently expectL}s to receive information which matches its expectations about certain combinations. For example, when told a disk had 80M} tracks and 28 sectors/track, it assumed 18 sectors per track. This made the number of sectors available as reported by SPN}ARTADOS much less than the number SIO2PC could actually offer with this disk image. The bottom line is this: Even thougO}h you can choose a disk image of any size with the new SIO2PC option #5, you may have to adhere to certain standard sizesP} when using SPARTADOS. I've added a lookup table to the program. If the disk size matches a certain standard, it reportsQ} a combination of standard values to the Atari. Otherwise, it uses the MYDOS technique of 1 track holding all sectors. YR}ou could compute some standard sizes like this: Number of Sectors = (#TRACKS * #SIDES * # SECTORS/TRACK) Size in ByteS}s = (Number of Sectors) * (#Bytes/Sector) (For the Size in Bytes, subtract 384 for double density, because the first 3 sT}ectors are always 128 bytes.) Enough Math. Here are the standard sizes you can use with option #5 which will result in U}standard numbers. As noted before, not all of these will work with SPARTADOS: #SECTORS KBYTES DENSITY TRACV}KS SEC/TRK SIDES 630 80 S 35 18 1 720 92 S 40 18 1 1386 177 S 77 18 1 1440 184 S 80 18 1 980 125 S 35 28 1 W}1120 143 S 40 28 1 2156 275 S 77 28 1 2240 286 S 80 28 1 1260 161 S 35 18 2 1440 184 S 40 18 2 2772 354 S 77 18 X}2 2880 368 S 80 18 2 1960 250 S 35 28 2 2240 286 S 40 28 2 4312 551 S 77 28 2 4480 573 S 80 28 2 630 160 S 35 1Y}8 1 720 184 D 40 18 1 1386 354 D 77 18 1 1440 368 D 80 18 1 980 250 D 35 28 1 1120 286 D 40 28 1 2156 551 D 77 28Z} 1 2240 573 D 80 28 1 1260 322 D 35 18 2 1440 368 D 40 18 2 2772 709 D 77 18 2 2880 736 D 80 18 2 1960 501 D 35[} 28 2 2240 573 D 40 28 2 4312 1103 D 77 28 2 4480 1146 D 80 28 2 All YOU have to pay attention to is the density a\}nd the number of sectors. SIO2PC will report the other numbers to the Atari. For MYDOS, just randomly picking a number of]} sectors, without regard to the above chart, seems to work fine. As I said before, the addition of the GET and SEND CO^}NFIGURATION info commands in some cases did more harm than good. For this reason, I've added yet another feature. Now you_} can turn on or off the configuration transfer function. Since the main menu was getting full, I added this to the TIMIN`}GS menu. Just hit 'A' to see the timings menu. Then hit 'C'. The status of the installed disks will be shown. 'Y' meaa}ns they DO respond to configuration commands. Enter the disk's number to toggle its status with regard to this function. b}I believe this should only be necessary when getting ready to format, if at all. I realize this discussion of REV 3.01 ic}sn't exactly simple. I hope you can glean the necessary info from it. It should be worth the effort to get ULTRA SPEED d}going and to cure formatting problems. Call or write if you have problems, bugs, or suggestions. I'd especially like any e} SPARTADOS experts to tell me how it tells me to go back to high speed. What is the '@' command SPARTA sends to device $4f}F? Also any info on how to get SPARTADOS to accept ANY size disk image would be useful. Rev. 3.05: I added many mog}re choices to the standard disk sizes for the "create disk" option (option #6). The new choices are those which correspondq}B%DOS SYSB*)DUP SYSB S1SIO2PC ASCB \2SIO2PC ASCB g3SIO2PC ASCsREADME TXTXxBUILDITTTXT.KITG TXT the selections in the SPARTADOS format menu. This is to make your choices easier when using SPARTADOS. Internally, thinr}gs still work the same. Again, with MYDOS, you shouldn't need to worry about certain prescribed sizes. SIMULATED DISs}KS: The main event for 3.05 is the addition of what I call "simulated" disks. This allows you to install any PC file ast} an Atari disk, without the necessity of converting it to an Atari disk image.. This is more or less intended to replaceu} the much despised MAKADISK.EXE. The features, theory of operation, and limitations are described below: The simulated v}disk is always single density (no size limit) and DOS 2.0/2.5/MYDOS compatible. It can't be written to, and can only be rew}ad sequentially (no random access). You CAN copy your executable files to the PC with FILE2PC and load (run) them directx}ly using this new function. If you ask for a directory, you will see the PC file's filename on your Atari. (The length iy}n sectors has no meaning.) Normally, after the end of file has been reached, the system automatically unloads the disk. Ifz} you don't want this, use the /N (no space) option after the filename and the file pointer will be reset to the start of {}the file after the end is reached - making the file available to read again. A new command has been added to install the|} simulated disk - the "I" command. It replaces the old "Z" command (create double) which is now a separate choice under th}}e Create Disk option. The new function works like this: A simulated directory sector is given on demand (#361). (When~} read, it causes the file pointer to be reset to the start of the file.) There is also a simulated sector #1 and sector #3}60 because some DOSes read these sectors to get information about the disk. The simulated directory supplies a dummy sect}or pointer to sector 401 to start the file. Each simulated data sector increments the sector number for the "next sector"} link. Thats why the status line will show you reading sector 401 thru 700. Then, it rolls down to number 401 again. So i}f it rolls over, you have read 300 (As of 3.10, trying to write doesn't return an error to the Atari, it "pretends" to wr}ite the sector.) Trying to read a sector out of sequence doesn't return an error either. The program woould still just }supply the next 125 file bytes if this happened. Note: if you need full functionality (READ, WRITE, RANDOM ACCESS) for y}our Atari-file-on-a-PC, just copy it to an Atari (SIO2PC) disk image. There are a lot of uses for this new feature. You c}an download Atari files to your PC and immediately load/run them on the Atari. You could program in 6502 on the PC using} a cross assembler and load the files to the Atari with no translation required. You may choose to keep some favorite pro}grams available under a "one Atari file per PC file" basis as an alternative to having files under Atari disk images. Wi}th rev. 3.11, boot files may also be simulated. To use this feature, just put /B after the file name. You can combine /B }and /N if you want. The program will send the next sequential 128 bytes to the Atari each time it requests a sector, unt}il the end of file is reached. PRINT-THRU: The serial bus ID for the Atari printer is 040h. With PRINT-THRU in ef}fect, the program answers bus commands directed to the printer and routes the data to the PC's printer or screen, as select}ed. Note that the Atari uses an EOL character (09B hex) to mark the end of line, while the PC uses carriage return and li}ne feed (CR/LF) characters. So SIO2PC gives you the option of making the translation. If you are printing text, you shoul}d translate. For graphics, probably don't translate. You can also strip the high bit if you want. The reason? ASCII is a 7} bit text code. Computers use 8 bit data. So, text with the high bit set is not defined under ASCII, and different comput}ers use it differently. On the Atari, text with the high bit set is printed to the screen as inverse video. On the PC you} may get graphics characters. So, when printing text, you usually want to clear the high bit. If you are printing 8 bit gra}phics data, you usually don't want to change it. For revision 2.6, I've made some changes to the PRINT_THRU function. } The reasons, and other comments, are summarized below: PRINTER NOTES, REV. 2.6 Due to reports of problems with the PR}INT-THRU mode in certain cases, I've reworked the print-thru routine. My basis for this feature is to try to provide 100}% compatibility with the Atari 850 Printer/Serial interface, since it should be the standard for the Atari. I went back a}nd reread the functional description in my 850 manual. Here is a summary: The Atari printer handler (in the computer's C}IO, not in the 850) sends fixed length records (40 characters) to the printer. If an EOL (RETURN key) is encountered, it }fills the rest of the buffer with spaces and sends it. Note that software on the Atari doesn't necessarily have to use CIO.} It can send data directly to the serial port using SIO. Fixed length, 40 byte, records are still necessary because the i}nterface expects them. Now, when the 850 receives a 40 byte record from the computer, it goes by these rules: 1) Send }all bytes to the printer, as 8 bit data (no clearing the high bit) except, 2) If an EOL (9B hex) is encountered, convert} it to a CR character, and ignore the rest of the buffer (assumed to be extraneous spaces supplied by CIO) except, 3) }If several consecutive EOLs are found, translate them all to alternating CRs and spaces and send to the printer. NOTE: rev }2.8 took out the spaces. My version was adding a space even if there was only one EOL, causing alignment problems in the }printout. My interface was designed to provide several modes of operation, one of which would emulate the 850 exactly. H}owever, it wasn't doing some of the things above. It didn't ignore characters after the EOL. It didn't translate multiple} EOLs to multiple CRs, only the first. It also translated EOLs only to CR plus LF, not CR only. Now you have the option of } doing either. What do the 850 rules above mean to the Atari printer programmer? Well, as I see it, you can NEVER send }a hex 9B to the printer, because the conversion is irrevocably hard coded into the 850's ROM. Since graphics data by natu}re can represent any dot pattern, it must include all possible combination of bits, including $9B. This really isn't a huge} problem. The software would just have to detect EOLs and change one bit. One dot's worth of error out of every 256 * 8, }on average, won't hurt anything. Another "cure" would be to have a printer which requires 7, not 8, bit data. Since $9B h}as its high bit set, it would never be required to send graphics data. (Just as it is not required to send standard ASCII t}ext, a 7 bit system.) All this info is presented for your amusement only. Hopefully, if my emulation of the 850 is co}rrect, your software will play just like it did on your Atari printer. Of course, the Atari software will have to be conf}igured for the characteristics of your PCs printer, not your Atari's printer, assuming they are different. Rev 2.10 infor}mation: I added a value to the TIMINGS menu for the printer. This is experimental at this time. One guy has a problem with }the system (PC) locking up after 3/4 page or so. I think maybe his printer isn't handshaking properly, so I've added this} timing value, to keep from "overrunning" his printer. The normal value is 0. If you have problems, add a little time. Th}is value is in units of 1/18th of a second, so keep your number small or you'll be in for a long wait. It is the value used} between sending of 40 byte records to the printer. Figure out about how long it takes your printer to print a line and u}se about half this value in seconds. So if your printer printed a line in 1 second, the value used would be 0009 for 9/18} of a second. In 3.07, I added another translation to the PRINT-THRU function. Now, you can also change the ATASCII ta}b character to a standard ASCII TAB in the PRINT-THRU process. A 'T' on the PRINT-THRU status line shows that you have c}hosen this option. UNINSTALL DISK: Why is it important to be able to do this? Well, if you have already used up all }your memory in defined ramdisks, you can't overlay them with new ones unless you remove the existing ones. This often would} mean you had to quit SIO2PC and restart it to get the configuration you wanted. Now, you can delete ramdisks, and thanks} to "garbage collection" performed by the program, all data moves down to fill in the hole. So, you now have free memory }equal to the size of the deleted disk. Uninstalling "file access" disks doesn't free any ram, but it does free up one of y}our four allowed virtual disks. STATUS LINE INFO: I've created a special status line, which is displayed at the b}ottom of the screen, to help identify problems and to show that the SIO2PC program is actively doing something. It shows}: LOC: An identifier for the subroutine being executed. CMND: SIO command from the Atari (Read, Write}, etc.) LAST: Command received previous to the one above. DEV: Hex number for device being addressed by Atari}. Note 31 - 38 = D1 - D8; 40 = Printer, 39 = Remote Control program 3A = FILE2PC program. COM: High/Low stat}us of the Atari command line. ERR: An error code returned by one of SIO2PC's routines. A character here doesn't} necessarily mean a problem. To aid me in debugging. SEC#: The sector # currently being written to or read from by t}he Atari. RAM: The amount of RAM you have free for use. It changes as you install and uninstall ramdisks. SPEED}: N means normal speed 19.2K Baud, H means high speed, as in Sparta Dos' high speed I/O. Note that the status line is }updated even when the device being accessed isn't an SIO2PC device. This allows you to use SIO2PC to eavesdrop on the SI}O bus. PC MEMORY USAGE: The technically inclined may want to know how the program decides it has the right to RAM for} its ramdisks. Well, I initially wrestled with this one. I was trying to use a DOS function for "Allocate Memory," but I g}ot an error code meaning "no memory available." This was crazy, because SIO2PC is a very compact program. It turns out t}hat when DOS runs a COM file, it allocates ALL available memory to the program. This is because DOS is intended to be a s}ingle tasking system. I took advantage of that fact. My program doesn't ask for memory, it just takes it, as though it's} the only player (which it should be). (Note: TSRs loaded BEFORE SIO2PC are safe. SIO2PC only uses memory higher than that } allocated to itself.) I use an internal DOS variable to decide if there is enough memory to load/create the ramdisk you }request. DOS SHELL FEATURE: The main improvement added in rev. 3.08 is the ability to "shell out" to DOS. What this} means is, you return to the DOS command line prompt "C:>" while SIO2PC is still resident. Then you can run DOS commands } or programs, type EXIT, and be back in SIO2PC. You will of course be subject to limitations on the amount of memory availa}ble with SIO2PC and any ramdisks you have resident in memory. It's a good idea to avoid messing with (deleting, renaming)} any files that SIO2PC has open, such as file access disks. (SIO2PC doesn't leave files open when ramdisks are loaded.) } In order to make this function fit on the menu, I had to dump a function. So, I took "R" off the screen. This is the func}tion which restores the screen (ESCAPE also works). Note that "R" still works, you just don't see it on the menu. There} are a couple of limitations to using the DOS shell function. First, COMMAND.COM must be in the C:\ directory. (Let me k}now if this is a problem for you. I can custom assemble a version to load another shell or program for you.) Second, du}e to the way memory is managed, you shouldn't install any TSRs while in the DOS shell. VIRUS DETECTION: I got a rude }introduction to the world of viruses a while back when I found that my system had been attacked by a virus. Since then, I'}ve added the byte count on the sign off message as a small first step. Rev. 3.03 adds some more complex checks. As soon }as SIO2PC gets control, it loads a second copy of itself into memory. Why? Because the virus may have already "done its }thing" to the running copy, then fixed it to look unchanged. Anyway, SIO2PC loads a second copy, and checks to make sure} it isn't any bigger than its supposed to be. You get a message if the size is wrong. It then does a CRC calculation on th}e copy. If the CRC result isn't as expected, you get another warning. The program will still run, however. I transla}ted the CRC calculation algorithm from C code in a book on serial communications. My version may not be exactly right, but} it does work. I've tried toggling a single bit and got the warning. Please note that no system is foolproof. Virus an}d counter-virus development is like the arms race. These additions don't seem to slow down program loading to any appr}eciable extent, but for those of you who can't tolerate ANY slowdown, I've included an override. Just put /v or /V on your} command line somewhere after the program name and the virus checking will be skipped. (You should put the /v after the }port # since the program comes up expecting a port #.) If you make changes to the program by interrupting it while it's }running (as I showed you how to do elsewhere), it may make the CRC wrong. To fix this, I've had the program print out th}e calculated CRC with its sign off message. The idea was that you could patch in the correct CRC value with DEBUG. Howe}ver, with rev 3.08, that's been automated: In 3.08, I changed the virus detection function (CRC check) so that the progr}am will offer to fix SIO2PC's internal CRC value to that just calculated. This is mainly for me, so newly assembled versio}ns can have their CRC set automatically. If you get the warning and haven't changed the program, better get out your vir}us checker and go over your files. Delete SIO2PC and install a healthy copy. REMOTE CONTROL PROGRAM USAGE This }section is to tell you how to use the Atari program called REMOTE.OBJ. This program is found on your disk image file, ATA}RI.ATR. The program allows you to send commands to SIO2PC from the Atari, just as if you were typing them on the PC's ke}yboard. So, if your Atari and PC are in different rooms (or something), you can swap ramdisks, save and load, etc. withou}t leaving the Atari. The file is fairly small, and if you plan to make use of it, you should copy it to as many ramdisk ima}ges as necessary to assure that it's accessible when you need it. When the program comes up, it shows a list of most of} the SIO2PC commands. If you want to study this list, hold down the START key, or else it will scroll off after 3 seconds}. The program next gets the status's of the 4 disks from the PC and puts them on the screen. Now you are ready to enter y}our command. Say you want to load a disk image from A:\ATARI.ATR into ramdisk #4. Just type L4A:\ATARI.ATR and RETURN. No}te that some commands give you prompts which you must answer in your command string, so anticipate them. For instance, if y}ou tell the PC to write back a file, you need to anticipate "USE EXISTING FILESPEC?" and "FILE EXISTS, OK TO OVERWRITE?".} Note that if writing was successful, the "W" in the status line will have changed to "N" after completion. One person wa}s using REMOTE.OBJ on the Atari as an AUTORUN.SYS, and feeding it with a batch script from SPARTADOS to automate setup of} his MIO ramdisks. Because he couldn't simulate a character from the keyboard with SPARTADOS, my "Run another command (Y/}N)" left him stranded. For this reason, you can now skip the command by starting your string with a space. When REMOTE.OB}J sees the space, it will send the command to the PC, then return to DOS automatically. Note: After transmitting a comm}and, REMOTE.OBJ is allowing the PC a certain number of seconds to complete it before giving up on getting the ramdisk sta}tus. If you find that not enough time has been allowed, let me know so I can add some more. (If you choose to skip the reru}n prompt, you won't be getting the ramdisk status after command completion.) MAKADISK.EXE As I stated earlier, the }need for MAKADISK.EXE has been pretty much eliminated by the introduction of SIMULATED DISKS, which allow the Atari to lo}ad in a file which is in native PC DOS file format. However, you may still find a reason to use MAKADISK. The purpose o}f this program is to allow you to take a PC file and convert it into an Atari ramdisk image so your Atari can read it. For }instance, you may have a modem on your PC only, and want to download Atari files. Or, you may want to write program sourc}e code on your PC, because it has an 80 column screen, and send it to the Atari for compiling. At present, this program }is basic - it allows you to put only one file to a standard single density ramdisk image. You should then boot the Atari up} with SIO2PC and copy the file to a real disk or a "full featured" disk image (one created by SIO2PC and your Atari DOS).} Then you may as well delete the MAKADISK created ramdisk image, it has served its purpose. You can't write more files to} it, the VTOC isn't correct. Note that another utility may be useful. I want to make one, but they are available in pub}lic domain (PC Magazine's utilities disk has one). The utility needed is to translate PC "end of line" codes (CR and LF) to} the Atari EOL code, which is hex 9B. If you are translating text files, you will probably need this. Binary files (such }as executable programs) shouldn't generally be translated. Note that MAKADISK asks for three things: 1. The name (or p}athname) of the PC file to be converted to Atari. 2. The name of the PC's ramdisk image file. This is the name you will }give SIO2PC when you load the ramdisk image. I use an .ATR extension for all my ramdisk images stored on the PC, but you ca}n use what you want. Note, MAKADISK doesn't tell you if there's already a file by that name, so be careful, existing file}s will be overwritten. 3. The name of the Atari version of the file. This is the name you will see in the first position} on your Atari screen when you ask DOS for a directory. 4) FILE2PC USAGE INFORMATION FILE2PC.OBJ is an Atari pro }gram found on your ATARI.ATR disk image file located on the distribution diskette. If you run this program on your Atari, } it will cause SIO2PC to go into the file transfer mode. Just follow the prompts on the Atari. You can read the technical d }etails in the TECHNICAL INFORMATION section if you're interested. This file transfer function has been much requested. A  }lot of people seem to have text files on their Atari's and want to transfer them to their PC's so they can pick them up o }n the PC's word processor. I should tell you that the usual warnings apply to this: Different word processors use different} formatting control codes. This is true even if you aren't going to a different computer. Plus, the Atari has its own met}hod of ending a line. It uses an EOL (9B hex or 155 decimal) to tell its editor to drop the cursor down one and move to t}he left margin. The PC, on the other hand, uses two codes, CR & LF or carriage return and line feed. They are hex codes 0}D and 0A (decimal 13 and 10). There are utilities available which translate codes like these. There was one called CHANGE o}n PC Magazine's utilities disk. Unfortunately, it only works with files up to 40K in size. I want to write one without th}is limit. A common denominator is the so called ASCII file, which is free of specific non-standard formatting commands. (}Like this file.) If your Atari word processor will output a plain ASCII file, you may want to use the option before sending} it to the PC. Some Atari programs will allow you to use an OS feature which lets you PRINT to a disk file. This should y}ield a plain ASCII file. Also, if you wanted to send it to your PC's printer, it should definitely be ready to go in this} format. Anyway, you will probably want to use a filter program to change your 9Bh's to CR/LF's as a minimum. Note that 9Bh} looks like a "cents" symbol on my PC. To see it, hold down ALT on the PC and type 155 on your numeric keypad. Rev 2.}3 note: Now that the PRINT_THRU function allows you to "print" to a PC file, you have another method of transferring your }Atari text files to PC files. And since the PRINT_THRU option has EOL to CR/LF and TAB conversion capabilities, it may be} easier to use in some cases than FILE2PC. Remember, Atari DOS allows you to COPY a file to P:. 5) FUTURE PLANS, CURR}ENT PRICING I now feel that SIO2PC is becoming a pretty mature program. However, there seems to be no limit to the numbe}r of enhancements one can dream up. I would like to take a stab at making the system capable of copying copy protected di}sks, with the ability to run them from SIO2PC storage without the original disks. I don't really see SIO2PC as some sort of} copy protection cracker, but it is a pain for users to have this system and still have to rely on an Atari drive to run  }some of their software. I'm not sure how effective this system will be, because I'm not up on all copy protection techniq!}ues, but ... we'll see. I also hope to soon try to implement the Lightspeed I/O feature you Spartados/U.S. doubler user"}s know and love. DONE It also occurs to me that some sort of Auto-compaction should be possible. I could have the prog#}ram keep track of the highest sector # written, and store only data to that point. The empty portions of partially writt$}en disks, in general, wouldn't take up any disk space. (DOSes generally use sectors sequentially, from low to high numbers%}.) On the hardware side, I am still trying to simplify the assembly of the interface. It takes far too much time for t&}he price charged to wire one up. So, I may soon make the DB-9 connector mount on the board and protrude thru the case, ju'}st like the ones on your PC do. This will save a lot of time stripping cables and wiring/assembling connectors. It will als(}o mean that the interface will need a DB9S to DB9P or DB25S to DB9P cable to interconnect it to the PC. I'll probably so)}on change the hardware so that the interface won't interfere with the SIO bus, even when the PC is turn off or not connec*}ted. Please see BUILD_IT.DOC for the current prices. I had hoped (and still do) to hold the price as low as possible. Sh+}ortly after receiving mention in Antic, I discovered a hardware problem which made it necessary to double the complexity,} and cost of the interface. SIO2PC is still just a hobby to me. I don't hope to recover my programming time (about 3 year-}s). But I seriously underestimated the time needed to assemble the interface, and do hope to get some reward for that time..} (Since soldering isn't fun*, like programming.) Since I've sold only a few interfaces so far (about 50 as of Jan, 1992),/} I haven't had a custom circuit board built. Therefore, I have to hand wire the circuit on prototype boards, with quite a0} few jumpers required. What's the bottom line of all this whining? I expect to have to either streamline assembly, raise m1}y price, or both. I've also considered making the software "shareware" and publishing the schematic so users could pay me2} for the software and build their own interface from scratch or optionally order from me. Any advice? *** DONE!!! 3} *Building one is fun. Building 10 or 20 is drudgery. REVISION LOG: 1.00: First release 1.01: Now uses defaul4}t addresses for COM 3 & 4 if BIOS data doesn't give addresses. Added option menu item "O", sub option "I" to allow ignori5}ng CTS, "I" is now the default. If your status line will show "H" in the Atari field with the Atari "on", you can toggle th6}is function. I believe the program functions fine while ignoring CTS, however, and may eventually delete the input entire7}ly. 1.02: Changed the stack pointer to be 256 bytes at the program end. This means the program now only uses about 8K i8}nstead of a full 64K segment. Now, on my system with only DOS and a 10K Mouse driver installed, I can get 3 - 143K ramdis9}ks (as usual) plus an extra 92K ramdisk. Killed a bug which caused the program to not recognize SIO bus command 022h, whi:}ch is "format in DOS 2.5 1.5 density". Added clear of all disk info lines every update when I noticed that garbage sometim;}es remained from old filenames. This change is cosmetic only. Reduced the timeout value which the disk returns to SIO. Th<}is should reduce the time the atari waits when it is given an invalid format command. Changed the method used to put comm=}and codes to the status line. Now even invalid command codes will get listed, adding to ease of de-bugging. Got rid of a >}bug which could cause an invalid error report when writing a ramdisk back to an existing filename. Changed the method used ?}to control the RTS line. Now the other lines of the MCR aren't affected. Note: These errors are primarily the result of s@}witching from one assembler to another. (now on QUICK ASSEMBLER). 1.03 4/3/90 Rewrote the routine for generating time dA}elays. I had been reading the refresh timer. Now, I'm reading the system timer and using a different method which should B}be more reliable and compatible. 1.0 4/10/90 Added option "E" under Options. Now, the user can manually input port addC}resses. The program also now puts to the screen the actual address used, whether manual or automatic. Put the address in D} Hex format. The standard addresses for COM 1, 2, 3, & 4 are: 03F8, 02F8, 03E8, & 02E8. 1.05 Added some diagnostics. E}Now, on initialization of a PORT, the software reads back register LCR and gives a warning message if doesn't read as proF}grammed. Then, the port is tested by sending a byte in the loopback mode. A warning is given if it fails. If these warningG}s occur, your program will probably fail. Either you have an incompatible COM PORT, or the program is using the wrong PORH}T addresses. Check your documentation and use "E", described above to set the PORT addresses. Also, the program now alwayI}s sets up the UART chip (serial port chip) directly, instead of using BIOS. Also in this rev, the timer chip, timer #0, iJ}s now programmed in mode 2, count = 0 for a period of 55 milliseconds. This is the way it should already be, but now I'll tK}ake no chances. I replaced my "long time" timer routine, the one I use for keeping warning messages on the screen for 2 tL}o 3 seconds. The old routine would occasionally lock up, or take far too long. Now, I have redirected the timer 0 interruM}pt for this purpose. Rev. 1.05 fixes a small bug which could result in extra characters on the filename line. It also fixesN} a bigger bug - the program used to write to a random address (Segment Register wasn't initialized) when it thought it waO}s putting the default port address into the BIOS data area, after it had been found to contain 0. Now it just leaves the P}0 alone. 1.06 Quite a few changes. Added the FILE2PC subroutine, which works with the FILE2PC.OBJ Atari program. This Q}gives you the capability of sending Atari files to the PC to become PC files, rather than Atari disk images. This means R}you can read the files with your PC's word processor. Rev. 1.06 also changed the logic on switching the PC's data out line S}to tri- state (off line) level when it is not in use. Some people were having trouble with erratic and slow operation, andT} the switching of this line was believed to be causing spurious pulses. Now it only turns off when a non- SIO2PC device isU} addressed, less that 1% as often as before. Another addition to rev 1.06 is the addition of double density. Now you can V} choose 183K ramdisks and double density sectors. Note that sectors 1,2, & 3 are single density, so the ramdisk can be a boW}otable disk. Currently, you can only specify a double density ramdisk by choosing "Z" instead of "C" for the "Create RamdX}isk" function. Then use a DOS that recognizes double density, such as MYDOS. I also made some changes to the LOOPBACK tesY}t performed on the UART (serial chip) upon initialization. I found I was getting occasional "failed loopback test" messagZ}es when everything was really OK. I did some fine tuning and haven't gotten a bogus message recently. I also added a func[}tion ("R"), which allows you to restore a trashed screen. Despite my best efforts, DOS will sometimes manage to sneak in \}one of its messages, causing a scroll and messing up the screen. Use this feature to fix it. (As of rev 2.8, ESCAPE does ]}the same thing.) 1.07 I added a directory display function, under Options. You can just give it a filename, including w^}ildcards to search the current directory, or a complete pathname to search other directories. Now, when you're in SIO2PC _}and can't remember the filenames of your disk images, you don't have to quit the program to find them. I name all my Atari `}disk images with the extension ".ATR" and so I search for "*.ATR". Also in this release, when you choose "Quit", the proa}gram warns you if you have written to any ramdisks but not yet saved them back to disk. Rev. 1.07 was to include the "Pb}RINT THRU" option, but it's not quite done. Rev. 1.08 will have it soon. 1.08 PRINT-THRU mode incorporated. Now, you PCc} can serve as an Atari to printer interface. You can have your Atari's printer output go to either the PC's printer or scd}reen. You can also choose whether to convert EOL's to CR/LF. Also in this rev, I added an Author credits screen. This sce}reen goes away as soon as you give the port #. I moved the "Restore Screen" function from the Options menu to the Main menuf}. After having Atari output printed to your screen just press 'R' to restore the menu. 1.09 Added feature to allow choig}ce of stripping high bit on PRINT- THRU data. This way, Atari inverse video text will come out as normal text. (Without, ih}t would print as garbage.) 2.0 Added function to allow deletion of a ramdisk. This function fills in the hole created ii}n memory by the deletion and allows the freed memory to be used in creating other ramdisks. 2.1 Changed the Atari progj}ram REMOTE.OBJ and changed SIO2PC to correspond. REMOTE.OBJ now asks for ramdisk info from SIO2PC at program start and afk}ter each command. SIO2PC sends that info to the Atari. Now, the remote user can get a fair idea of whether his command wal}s successful or not. Also, now a leading space in the command string will cause REMOTE.OBJ to go back to DOS after completim}on of the command without asking if the user wants to send another command string. 2.2 Changed the point at which then} program looks at the device number in the command frame and disables the data out line if a non-SIO2PC device is being ao}ddressed. This is in hopes of curing an interference problem some users have experienced when using real drives and SIO2PCp} together. 08/05/90 2.3 AARGH!! Rev. 2.2 still didn't take care of the elusive "problem". So, this version adds a swiq}tch which allows the user to lock SIO2PC's data out line into the "enabled" state. This was verified earlier to work. Alr}so, I finally did away with the old CTS or "Atari" line, which didn't seem to have any advantage. The idea was to carry thes} 12 volt line from the Atari to the PC to tell the PC it was on. It turned out that some PC's didn't recognize it, or somt}e Atari's didn't have the 12 volts out. But, anyway the program worked fine without it. Another big change is the redesigu}n of the user interface screen. It has become obvious to me that the separate "Options" screen was cumbersome and unnecessav}ry. So I've combined all choices onto one screen. This means there are some functional changes, for those of you using baw}tch and remote script files. First, option "O" is no more. Also, the "D" display status line choice is now "T", toggle stx}atus line. Another enhancement added with this revision: Now, you have a third option with PRINT_THRU: You can specify ty}hat the Atari's printer bound output be sent to a PC file. Still another change is to the Status Line. Replacing the "Atarz}i" line status is the DEVID identifier. This is the SIO bus ID of the device being addressed. Elsewhere in this README fi{}le are the ID's of various bus devices. Also, as of this revision, the program updates the Command and DEVID fields even |}when a non-SIO2PC device is being addressed. Now you can see what your Atari is telling other devices, if it's trying to ad}}dress non existent devices, etc. 2.4 Changed the directory print-out from 2 to 4 entries per line. Now your director~}y can have more than 90 entries without scrolling off the screen. Wrote handlers for the Critical Error Vector and the Cont}rol - C vector. The Critical handler is the one which gives you the Abort, Retry, Fail message if your drive door is open}, the printer is out of paper, etc. It turned out that this would let you bail out of the program without going through m}y normal "Quit" routine. This restores the timer interrupt, for one thing. Anyway, now you get plain English messages and c}an still bail out if you want, but won't lock up your computer anymore if you do! Also added some obscure functions to Pr}int-Thru that used to work with the original Atari 40 column printer, the one that plugged right into the SIO port. I do}n't know if any software out there sends these commands or not. Also added the SHAREWARE message at the end of the program.} 2.5 Adding user command "A" to adjust timing values. Allows user to set critical time delays used in the bus data tra}nsfers, to try to iron out differences between different systems. This addition is menu choice "A" and adds the TIMING me}nu. This shouldn't be necessary in 99% of cases, but here it is in case. See the "timing" section or the TECHNICAL INFO p}art of this DOC for more info. 2.6 Worked over the PRINT_THRU routine to make it more flexible and more compatible with} the 850 interface. Also moved the default "timings" value to the front of the program to make it easier to find and change} with DEBUG or NORTON's utilities. 2.7 Changed the PRINT_THRU routine so it will detect a "disk full" error when prin}ting to a file, alert the user, terminate the PRINT_THRU process. This need was pointed out in Bob Wooley's AIM review. }2.8 Fixed a bad printer bug caused by rev 2.6 in which lock up of the PC would occur if you were converting EOL's to CR/LF}'s and an EOL occurred at byte 40 of the printer buffer. I also got rid of the space added after CR/LF because it was cau}sing problems. Also fixed so the ESCAPE key works the same as 'R' to restore the screen. Most people jab the ESC key when} they get confused. 2.9 Did a little more work on the "disk full" problem so it gets addressed anytime you are writin}g to a disk: PRINT_THRU, FILE2PC, or WRITE DISK FILE. 2.10 More work on Print-thru. Added more LOCATION and ERROR co}des to help in trapping errors. Also added a time value to the TIMINGS menu to be used when printing to a real printer. It} causes a wait between records sent to the printer. 2.11 Added a byte count to the sign off message so the user can che}ck if a virus has changed the program size. 2.12 Added directory function to extract the Atari disk directory from a }disk image file. Now working for Atari DOS 2 & 2.5 compatible DOSes only. 3.00 Added "file access" disks. Now the u}ser can have disks up to 16 megabytes in size. Increased allowable disk numbers from "1 thru 4" to "1 thru 8". Added th}e color interface screen and color coded key fields and statuses. Added fields to show the status of the PRINT_THRU func}tion. Added support for "get configuration" and "set configuration" commands. Added the "sector #" and "free ram" fields }to the status line. Fixed the status line so it's updated even when not being displayed. Fixed a bug which caused retur}n of incorrect status for double density disk images. Warns before uninstalling a ramdisk which hasn't been saved. Form}atting now clears the disk image to zeroes so it can be compacted better. Killed a small bug on the REMOTE CONTROL program} which may have appended one spurious character onto the command string. Split source file into 3 parts. 3.01 Correc}ted some bugs from 3.00; Added ULTRA SPEED I/O (SPARTADOS compatible). I don't have all the difficulties worked out yet}, but it is working. The bit rates available on the Atari don't exactly match those available on the PC, so I had to pick }a rate where they were practically the same: 38 KB. This isn't as fast as the US Doubler can go, but it IS twice as fast} as SIO2PC usually goes. A few cautions are in order. I couldn't fully understand all the stuff SPARTA DOS is doing. It } goes to high speed, then back to regular, and again to high. I get lost somewhere in the middle as to what is the signal }to go back to high speed. As a patch, I put in the "J" command, for Jump to Ultra-speed. It actully toggles between the }two speeds. (There's also a new field on the status line for speed: "N" for normal, "H" for High.) We'll find other compl}ications as we go along. For instance, trying to mix high speed stuff with functions which work in regular speed (PRINT_TH}RU, REMOTE, FILE2PC) will probably cause problems. We should probably limit the high speed stuff to loading, saving, and }copying files. But that's most of what we do anyway, right? Also did a lot more work on disk configurations. I'd especi}ally like any SPARTADOS experts to tell me how it tells me to go back to high speed. What is the '@' command SPARTA sends} to device $4F? Also any info on how to get SPARTADOS to accept ANY size disk image would be useful. 3.02 Fixed a bug }which was keeping the DATA out line on too long. 3.03 Added virus check routines for file length and CRC. Fixed a bug in} FILE2PC.OBJ. 3.04 I did some work on the directory functions. First, a minor fix. The separator between a filename} and its extension was supposed be a period (.) for a normal file and a star (*) for a subdirectory. This logic was rever}sed until now. Second, I've added SPARTADOS awareness to the function which extracts directories from Atari disk images. F}or the program to know that the file is a SPARTA image, its name must end in an 'S'. I use an 'ATS' extension for SPARTA} images and 'ATR' for others. A nice feature I added for this function is the ability to automatically expand subdirecto}ries in addition to the Main directory. I don't even have this working for MYDOS yet. You can view all your Atari files} with a request to see '*.AT?' if you use a naming convention like mine. OK, SPARTADOS users, are you happy now? I'm also d}oing some hardware changes. I'm now going to a hardware version which is simpler, but should work better. It doesn't us}e Tri-state logic. Instead, it uses an open collector type logic to keep from interfering with other bus devices. This }design should be better capable of not interferring when the PC is off. Since there is no Tri-state switching, the RTS lin}e is not used, and the "Lock Data Line" function has no meaning. Also, the status of the command line to the PC is inver}ted. This necessitated a change in software. For the new hardware, the revision number at the top of the screen ends in }a lower case 'i'. I'm putting this information out in case I get the wrong version to anyone. It will ususlly work, but s}putter along. Whichever version you have, just let me know if you want the other one and I'll send it. I would send out} both versions now, but there's not enough room on a 360K distribution disk. (Also, ACOMINIT.COM is not needed with the n}ew hardware.) 3.0 I added many more choices to the standard disk sizes for the "create disk" option. The new choices }are those which correspond the selections in the SPARTADOS format menu. This is to make your choices easier when using S}PARTADOS. Internally, things still work the same. Again, with MYDOS, you shouldn't need to worry about certain prescribed} sizes. I did a lot of tweaking on the "main loop" (the one which monitors the bus for commands and dispatches the variou}s SIO command functions). I think I found one error. One user (at least) was having major problems with revision 3.03. } The main event for 3.05 is the addition of what I call "simulated" disks, described earlier. I also added a feature to }get rid of the character in the ERR field of the status line when you use the "R" command or just press ESCAPE. This gets} you back to a clean slate. To be honest, even I don't know why some of these errors occur, but most are harmless. For }instance, your Atari DOS may be polling non-existent devices to see what's there. There's another thing the "R"/ESC command} does for you: It bugs some people that the cursor ends up at the right end of the screen after some functions are compl}eted. They think this means the system is "hung up." The "restore screen" command will put the cursor back on the left}, where it belongs. 3.07: I added another translation to the PRINT-THRU function. Now, you can also change the ATASCII }tab character to a standard ASCII TAB in the PRINT-THRU process. A 'T' on the PRINT-THRU status line shows that you have} chosen this option. 3.08: The main improvement added in rev. 3.08 is the ability to "shell out" to DOS. This is descri}bed in the Technical Notes section. Added automatic (user's choice) correction of the internal CRC if legitimate changes }caused a false virus warning (The user must verify this.) 3.09: Fixed a small bug which caused numbers in the filenames o}f simulated disks show up as graphics symbols in the Atari directory of the disk. It was in the "convert to uppercase" r}outine: numbers don't need converting! 3.10: Made some changes to the "simulated" disk function: First, it no longer }returns an error (just an 'S' in the ERR field) if the Atari tries to write to the disk. Second, it now gives the simulate}d disk a "normal" status - not "locked" and not "in use." Why did I do such a crazy thing? Well, some programs (such as} my assembler, AMAC) want to open the file for write access, even though they don't intend to write to it. Don't ask me }why. Opening the file in this way includes writing to the directory sector. It could be that others have encountered this} problem. Anyway, now I can write my source code on the PC, filter it through a utility to convert it from ASCII to ATAS}CII, and assemble my program without ever copying it to an Atari disk or disk image. Another change is to the sector num}ber reported by the simulated disk. It's pretty boring and not very informative watching all those sector # 100s go by on }the status line. So now, the program now starts with sector 401 and counts up to 700, then again cycles to 401. (Note: }it's still sending sequential data, it just reuses the sector number. DOS isn't smart enough to realize it's seen the se}ctor number before, and some DOSs might get confused by sector nunbers > 720.) 3.11 - More changes to simulated disks:} now you can install a simulated BOOT disk, by using /B after the file name on the 'I' menu choice. I also did a little }human engineering on the virus/CRC warning message. I want people to realize that something's potentially not right. So }now the warning is in flashing green. Also, to fix the CRC (after assuring oneself that there isn't really a virus at fa}ult), the user must type 'OK' instead of just 'Y'. 3.12 Found a bug in the extract Atari directory function which cause}d improper action on SPARTADOS files. Also added an Escape Key bailout from that function. 3.13 A user complained th}at he gets printer timeout errors when using PRINT-THRU, so I experimentally increased some timing values. 3.14 - I fo}und that the speed of "simulated" disk accesses had slowed for unknown reasons. Turns out I had duplicated a variable n}ame with a local code label, so a timing value was greatly increased. Fixed it by assigning a new label in my source cod}e. 3.15 - Added screen blanking. Press "B" to blank the screen and ESC to restore. Note: didn't add this feature to th}e Menu. I want to make it automatic in the future. 3.16 - Worked on the GET_DIR and GET_DRIVE subroutines, to cure a }problem resulting in an INT 024h hardware error on startup. It seems that DOS function 019h (get default drive #) returns }the number based on 0 = A, 1 = B, etc. But function 047h askes for a drive number code based on 0 = default, 1 = A, etc.} This difference caused drive 2 (C from function 19) to translate to drive 2, B, for function 047h; and a hardware error} resulted if no disk in drive B. PROBLEM DIAGNOSIS QUESTIONS If you have trouble, I would like some information abou}t your system. (Actually, I'm interested even if you don't have problems. Please send your comments.) What kind of Ata}ri? 800? 400? XE? XL? 1200? 600? What Atari DOS? What type of formatting? What kind and class of PC? XT? AT? '386? Orig}inal PC? Clock Speed? Has your port been verified functional with other equipment? What version of PC/MS DOS? What d}oes the status line at the bottom of the program show? How long does TESTIME1.EXE take to run? (Should be close to10 sec}onds.) Any detailed information from your PC's tech manual about your serial ports and port addresses in general will be} useful. If you only have problems part of the time, what specific steps lead to the problem? Please read the REV_LOG} and TECHINFO sections of this for some more information which may help with problems. Read also any other .DOC files you} find on the disk - there are tidbits of information scattered through various files which may be of use to you. POSS}IBLE PROBLEMS AND SOLUTIONS Can't address certain drives If you are unable to address certain drives, such as 3, 4, 5}, 6, 7, 8 (error 160 results), it may be that your DOS isn't set up to include these drives. On Atari DOS 2 and 2.5, you} can find out by booting in BASIC and giving a PRINT PEEK (1802) command. The resulting number is the sum of the follo}wing: 1 for drive 1; 2 for drive 2; 4 for drive 3, and 8 for drive 4. So if you get "3," your DOS is set up for drives }1 and 2 only. To fix your DOS, you simply execute a POKE 1802,15 command. Then go to DOS and execute the "H" WRITE D}OS FILES command. Finally, turn off the computer and reboot. Another error that has plagued me from time to time is }this: I "create" a ramdisk, then try to write to it without formatting it first. Remember, if you create a ramdisk from} scratch, you have to format it. If you load up a stored ramdisk, you don't have to format (or create) the ramdisk. An}other problem which isn't the fault of SIO2PC, comes when you try to format a 92K ramdisk with DOS 2.5's normal command}. You must use the "format single" command here. The normal format command of DOS 2.5 only works with the 143K ra}mdisks. On some format related errors, the Atari will retry "forever" before giving up and reporting the error. S}o you may think the system has locked up. Note that on the 64K ramdisk, the program doesn't report back to the Atari} that the full set of 720 sectors isn't available. You'll get an error 138 on the Atari if you try to put too much d}ata to this ramdisk. A utility is needed to mark the unavailable sectors as "used" on your DOS's VTOC. If this all sound}s pretty intimidating, you may want to steer clear of the 64K ramdisk. (As of rev 3.00, the program DOES report the numb}er of sectors available - if the DOS is smart enough to ask. But with some disk image configurations, it may now be MANDAT}ORY to configure your Atari DOS to recognize the disk.) Here's a problem I had recently (1993): I was using SIO2PC, whi}ch had been working fine before, and it started sputtering along and returning errors (on the Atari) when disk transfers }were attempted. After much brainstorming and fearing a hardware problem, I found out that the problem stemmed from "shel}ling out" to DOS from WINDOWS. Evidently, WINDOWS keeps "checking up" on DOS programs to the extent that it can interfer}e with high speed data transfers. Noise, especially from printer One user told me that his SIO2PC was susceptible to no}ise pickup from power cords, etc. (I have been able to run 75' of unshielded cable near power cords, over air conditionin}g units, etc, without problems, so you never know.) Anyway, he said he wrapped the box in foil and fixed it. I don't know} if I'd go that far, but if you have intermittent problems, you might look at the cable routing. Yet another potential pitf}all: You will usually remember when you have a real disk installed, you must not have an SIO2PC ramdisk of the same numbe}r, since a collision will occur. But sometimes you (I) will boot up a DOS which automatically installs a ramdisk handler }on the Atari, forgetting that there is an SIO2PC ramdisk of the same number. When I try to access this disk #, I get strang}e results not immediately identifiable as to the cause. So, if you use Atari ramdisks, watch out for this. Along this }same line: I just got a letter from a user who was having trouble with the PRINT_THRU function. It would stop printing at } unpredictable places. Then he noticed that the Atari was plugged into a surge suppressor, but the PC and printer weren't.  }When he plugged those items into a surge suppressor, the problem was fixed. So this is a major Ah-Ha! for anyone having r }andom problems in this area. Printers generate a lot of electrical noise. I never have this problem on my system, but no  }wonder: My Atari and PC aren't on the same desk, they are powered from separate wall receptacles, and each has its own surg }e/noise suppressor. Let me suggest a couple of other things: Make sure your SIO2PC cable and your printer cable are kept  }separate. If your printer and serial cables have thumbscrews, tighten them up. I noticed this made a big improvement on t}he amount of noise my computer outputs to my ham radio. If you can't get rid of the noise, here's another solution, but} not quite as clean: Set up SIO2PC to capture the Atari's printout to a file. Then leave SIO2PC and use the PC DOS COPY c}ommand to copy the file to the printer (PRN). Use the MS DOS "binary switch" option, or your printer control codes won't }make it thru the copy process. Here's another reason to use the "binary switch" option, discovered recently. A guy was us}ing this method and it worked fine except that the process would stop short before the data was completely transferred to} the printer. When MSDOS is copying files and isn't in the binary mode (/B switch), it looks for the 1A hex character as} an end of file marker. If a 1A byte is in your printer data, the transfer will stop at that point unless you use the bina}ry switch. Lock Data Line Rev. 2.3 added a switch (function "K") to allow locking the data out line into the enab}led state. This is for a user or two who had a specific problem which occurred when the data line went to the inactive stat}e automatically. You should leave this switch in the Auto state. Otherwise, when you try to address non-SIO2PC devices, i}nterference will result. However, if you note that when you address an SIO2PC drive and experience hesitation, sputtering}, etc., try locking the data line on and see if it helps. (I now believe the TIMINGS MENU modification is the real cure f}or this type problem.) Copy protection problems Some people have told me that some copy protected programs which have} been "broken" will run from a real drive but not from SIO2PC. Recently, one guy told me of a solution: He uses the TIMINGS} menu of SIO2PC to slow down SIO2PC's I/O rate so it looks like a real drive. Appapently, some protected programs time th}e "sector get" and "sector put" processes to make sure they aren't running out of a ram drive (indicating that the protec}tion has been broken). Since SIO2PC is a small program, one could have customized versions which are slowed down just for} use on these problem programs. (Elsewhere in this DOC is info on how to permanently alter SIO2PC's timings.) Interferen }ce from real drive In my operating instructions, I tell you to turn off your real drive #1 and then boot from the SIO2PC!} disk #1. I haven't heard any complaints about this, but I recently borrowed a 1050 drive, which, when I turned it off, i"}nterfered with the serial bus and I couldn't read the SIO2PC drive. The solution was to turn the front lever on the 1050 to#} the EJECT position but leave the 1050 on. Apparently this told the 1050 not to answer the call, which then went through $}to SIO2PC OK. Extract Directory Note Note that the Extract Atari Directory function can't work on disk images current%}ly in use as "file access" disks on the system. This is because SIO2PC already has these files open for read/write and can&}'t open them again to extract the directory. Status Line Note You may notice that under certain conditions your statu'}s line is not being updated. This occurs when you have PRINT_THRU enabled with the screen selected as the output device.(} To keep the status field characters from messing up your screen print, the status line update is inhibited until you tu)}rn off PRINT_THRU. USER'S QUESTIONS 1) Does the program reformat my PC's hard disk? No! Your Atari disk image*}s are stored on your PC as ordinary PC files. 2) Could I use the hardware part of the SIO2PC system as a general purpose+} RS-232 interface? Like, to connect my Atari to a modem? Hmmm... This is a good question, and the answer is sort of, "yes ,}and no." Electrically, yes you have a true RS-232 connection coming out of the interface. However, note the following: -} RS-232 includes several handshaking lines in both directions. But, most communications setups only use a few, and optiona.}lly can be told by software to disregard those they do have. I've seen computer to computer PC data links that had just D/}ata in, Data out, and ground (via RS232 serial port). My system has one handshaking line from the Atari to the PC, the CO0}MMAND line which goes to RI on the PC. You can often "dummy up" inputs to fool one end of a link into thinking the other en1}d is saying, "ready." A null modem cable is usually made up this way. Bit rate (BAUD) and software on the Atari end: On 2}the Atari, the SIO subsystem of the OS always works at a fixed rate: 19.2 Kilo- baud, except for the cassette: 300 baud. 3}Also, it uses a strict protocol to send data: command frame, acknowledge, data frame, acknowledge, complete. But if you w4}ant to write your own software (or you have some already written), you can directly program the Atari's POKEY chip (UART) t5}o any baud you want, and you can directly put data into its transmitter for sending, and can directly read incoming data 6}from the receiver. (My notes under ATARICOM.DOC talk about how I did this once.) When you do this, you are completely byp7}assing SIO and running the whole show yourself. You can also control the handshaking lines yourself. To get into somethin8}g this serious, you need the Atari Technical User's Notes. It's fun to learn, but takes some time. Actually, since writi9}ng the above response, I HAVE written a specialized terminal program for my Atari using SIO (no 850 interface) configured :} for 9600 baud and connected to a Packet Radio terminal controller which uses the RS-232 standard. 3) How come SIO2PC is;} a dead end - no extra port for adding another device? I'm finding out this bothers some people. I figured, you could al<}way make this the last device in your chain. But I guess other manufacturers figured the same. It would be vastly more co=}mplicated for me to build a box with a receptacle or two for SIO in it. They generally come as PC board mounted connecto>}rs, not as "in line" types like the plug I do use. So my board would be much bigger, I would be hand cutting rectangular cu?}touts in the box, etc. However, someone had a suggestion, if you are building your own: He said the "newer" cassette rec@}order (the 1010?) had two SIO2PC jacks in it. You could get a surplus 1010 junker for a few bucks, gut it except for the A}connectors, and build your SIO2PC in this box. Alternately, you could just buy a couple of the jacks from your friendly AB}tari parts supplier and design them onto your board. Here's another idea: build the interface into your Atari. Mount a C}DB-9 in the Atari's case. (I've done this.) Then, your SIO port would still be free, and you just use a standard serial D}cable to connect your Atari to any PC. 4) Will SIO2PC run on an Atari ST running PC ditto? From what I've heard soE} far, no. SIO2PC does a lot of direct to the chip I/O, bypassing both MS-DOS and the PC's built in BIOS routines. I suspeF}ct that PC ditto doesn't emulate the PC down to this level. However, if there are any ST experts out there who want to workG} with me on it, I think we could modify the program to make it work. I configure the serial chip (UART) directly because H}the PC BIOS doesn't have 19.2 kilobaud as an option, although the chip will do it. I input and output data from/to the UAI}RT directly for speed. I have also reprogramed the PC's timer chip and have a timer driven interrupt running. I think all tJ}his could be worked out if we had the right info. How about it, ST users? 5) Will you give out your source code for SIO2K}PC? I don't routinely give it out. But if you would like to have the source code just to see how it's done, or to make sL}ome modifications, or even to "borrow" the basic I/O routines for use in your own non-commercial programs - write and letM} me know. SIO2PC is written entirely in assembly language for the MICROSOFT QUICK ASSEMBLER. I also have a version whichN} will assemble under A86, the excellent shareware assembler. 6) How about a default path? One person asked to be abO}le to have a default path so he wouldn't have to tell SIO2PC where to find his disk images. I usually run SIO2PC out of P}the directory where my files are stored, so I don't need to specify a path. However, I just recently realized that DOS hasQ} a command built (SUBST) in which allows you to specify a virtual "drive" letter for any path. For instance, from the DOR}S prompt, type SUBST E: C:\ATARI\DISKS. After this, you can substitute drive E: for the full pathname, even from within S}SIO2PC. A pretty convenient feature. 7) Direct access to hard disks / HUGE Atari disk images. I am getting a lot of reT}quests from people wanting to have HUGE Atari disk images and direct access to the PC's disks. I'm opposed to using direU}ct sector writes on PC disks. The possibility of inadvertent destruction of PC files is too great and I'm afraid of the risV}k. However, I'm thinking of having random sized disk images stored as PC files which would not be moved into PC ram. I W}would have to use MS DOS's file pointing features to read in the correct "sector" directly from the file. The DOS overheadX} would slow things down a bit, but I have an idea that it wouldn't be too bad. **** DONE *** WHO'S NICK KENNEDY? Y} I'm an electrical engineer, but I don't work with computers professionally. That part is a hobby. I got the Atari 800 in 1Z}982, mostly so I could play Asteriods. Data communications interests me. I have written a Morse code program to inter[}face the Atari with my Ham Radio station. Later, as a sort of evolutionary forerunner to SIO2PC, I wrote programs linking m\}y two Atari 800's together, first via their serial (SIO) ports, and later via their joystick ports. The Atari equipped wi]}th a disk drive would send files to the one without. I thoroughly enjoy programming in assembly language, and may attem^}pt "C", if threatened at gunpoint. To me, the hardest part of programming is finding a worthy cause. There are so many_} programs out there, commercial, free, and shareware - all good, that it's hard to find a niche that hasn't been filled. I `}think SIO2PC fits the bill. As I've said before, I'm very interested in your comments, suggestions, questions, praise a}and condemnations. So, if you built it yourself and have a comment, let me hear from you, even if you weren't moved enough b}to pay a shareware fee. I won't harangue you about it. Nick Kennedy OTHER PROGRAMS I thought I'd tell about othc}er programs I've written, on the off chance someone may find one of them useful. Everything I've done involves interfacid}ng a computer to another computer or to other external devices. All of my programs address some oddball specific need I hae}d at one time or other. These programs fulfill a function, but some of them lack polish: PINEWOOD.EXE - Written to timef} external events (in my case, pinewood derby cars) to millisecond accuracy. You hook a START switch to one serial input g}line and STOP switches to two others. (Only one serial port is required.) I used phototransistors for the stop switches. h} The program starts timing when the START switch changes state, gives the time that each car (event) activates its STOP swi}itch, and proclaims the winner! TIMER.COM - A variation on the above. This timer just monitors one line. It starts tj}iming when the line changes state and stops when it returns to its resting state. I used it to time a "one shot" device (ak} 555) to make sure it was giving exactly the 50 milliseconds I needed. This program would probably be called an intervall} timer. PACKET.OBJ - A packet radio controller for the Atari 800. This version is specifically set up to send control sm}trings to an MFJ-1278 controller. Note: this is a ham radio thing. Essentially, this is a terminal program similar to wn}hat one uses with a modem. It doesn't have advanced features such as file capture, etc. EPROM.COM - Interested in burnio}ng your own EPROMs? Make your own Atari cartridges? I built Steve Ciarcia's Serial EPROM Programmer from the Circuit Cep}llar, volume VI book. The companion BASIC controller program left much to be desired, so I wrote a faster and more flexiq}ble one in assembler. FREQ.COM & SYNTH.OBJ - Another ham/experimenter thing. This program - which I have written for thr}e PC, the Atari 800, and for a 6502 single board computer - is a controller for a Direct Digital Frequency Synthesizer. s}The synthesizer works from 0 to about 7 MHz, and has 1 hertz resolution. The controller gives the many fancy features of mt}odern ham transceivers: split transmit/receive frequencies, memories, memory scan, band scan, etc. In the "EXTRAS" diu}rectory of the distribution disk, I've already told you about my programs linking two Atari's, and about my ham program Kv}EYER.OBJ - the morse code keyer program which took almost as much programming time as SIO2PC. If any of these things meew}ts a need, let me know. NOTE: SAVE THIS FILE AS PLAIN TEXT /W LINE BREAKS ... *.TXT, WITH MARGIN AT 4 7/8. things mees D I S C L A I M E R I have tried to ensure that my software is free of harmful defects (bugs) and of viruses. Hoy}wever, either could slip through my defenses. Use the software at your own risk. Similarly, I believe my hardware desigz}n to be in accordance with good practice, and I have a number of satisfied users. However, wiring errors, errors in {}my design, and configuration differences are possible and I cannot guarantee that these problems will not lead to damage |} to your equipment or software or other unforeseen damages. Furthermore, if you choose to construct my interface your}}self, you must be experienced with electronic building techniques. Even if you are experienced, you could burn or cut~} yourself or experience other damage or injury. I consider the SIO2PC system to be a service to the Atari user's communit}y. Although I ask a shareware contribution, and do make a charge for assembling interfaces or kits, I still consider my} efforts to be a hobby and a service. IF YOU HAVE SENT ME ANY PAYMENT FOR ANY SOFTWARE, KIT, OR ASSEMBLED INTERFACE AND} DO NOT WISH TO ASSUME FULL RESPONSIBILITY FOR USE OF OR CONSTRUCTION OF THESE ITEMS, YOU MAY RETURN THEM TO ME AND I WI}LL REFUND YOUR MONEY. IF YOU ARE CONSTRUCTING THE INTERFACE AND CANNOT VERIFY THE ADEQUACY OF THE DESIGN ON YOUR OWN, SE}EK THE ADVICE OF ONE COMPETENT IN ELECTRONICS. OTHERWISE, DO NOT ATTEMPT TO BUILD AND USE THE INTERFACE. } BUILDING THE SIO2PC INTERFACE BACKGROUND ON }HARDWARE REQUIREMENTS: Note: The information in the BUILD_IT directory of the diskette refe}rs to the "two chip" version of the hardware. I am now supplying only the "one chip" version because it is easier to build }and has certain technical advantages. Both versions work equally well, but I supply software which defaults to the one chi}p version. The software can be switched to either version under the "A" sub-menu. The RS-232 serial port on your PC and }the SIO serial port on your Atari 8 bitter are quite similar. There are some differences, however and the SIO2PC inte}rface is designed to accommodate these: 1) The Atari puts out (and expects as inputs), TTL level signals. In general,} +5 volts for logic 1 and 0 volts for logic 0. The RS-232 standard is bipolar: roughly +5 to +15 for logic 0 and -5 to } -15 for logic 1. Note that this is also inverted from TTL, that is, the more positive signal is logic 0 here. So, the }first hardware requirement is to convert TTL to RS-232 levels for signals from the Atari to the PC, and RS-232 to TTL} levels for the reverse direction. 2) The RS-232 standard is designed for one to one communication. The "data out" li}ne of one device goes to the "data in" line of another, and vice-versa. The Atari SIO system is a data BUSS. The Atari co}mputer's data out line can connect to several peripherals, and their data out lines all connect to the one data in line on} the Atari computer. This means there is a potential for interference if more than one peripheral tries to talk at the s}ame time. This is solved by simulating an open collector output to the Atari using a diode and pull up resistor. Formerly}, I buffered this signal through a Tri-State driver, which was controlled via a handshaking line from the PC. The current } version uses one less chip and less complication in the software. 3) Handshaking. The Atari uses only one handshaking l}ine on its SIO bus. This is called the COMMAND line. The Atari computer uses it to tell all peripherals to "listen up" be}cause a command to one of you will follow. The PC's serial port has several handshaking lines, so the interface will} just convert the COMMAND line's TTL level to RS-232 and send it to the PC's "RI" handshaking line. Also, another PC }handshaking line (RTS) which is an output, will be used to enable/disable the Tri-State data out line discussed above. } 4) Baud, Word Size, Start/Stop bits, etc: The philosophy of SIO2PC is to require no software patches on the Atari. T}his is so you can BOOT the Atari from the PC, you can use any DOS, there will be no software conflicts, etc. Fortunate}ly, we got lucky here. The Atari serial bus runs at 19,200 bits per second. The PC's BIOS doesn't allow speeds this hi}gh, but the hardware does, so the SIO2PC software just programs the chip directly without DOS or BIOS. The other parame}ters listed are also easily programmed into the serial chip (UART) on the PC by software. So, if we just handle 1 thru 3 }above, we are set to go with regard to hardware. CIRCUIT DETAILS: I now have files which draw the schematic on your }PC screen using built in ASCII symbols. This means you don't need any special viewer program to see them. The fi}les are 1SIO2PC.ASC, 2SIO2PC.ASC, and 3SIO2PC.ASC. Each takes up one screen. The batch file VIEW-CKT.BAT displays the } three on screen in succession. You can also dump these files to your printer. Also note that I have .GEM files which }draw less clunkly versions of the same thing, plus a board layout using a Radio Shack prototype board. Write me for c}opies. Chip used: 1) The Harris ICL232 (or MAXIM MAX232) is a single chip RS- 232 to TTL and TTL to RS-232 converter}. It includes two gates to convert TTL to RS-232 and two to do the reverse. The beauty of this chip is the internal 5 volt} to bipolar power supply converter. Normally, you would need a separate plus and minus 12 volt or so supply for the RS-23}2 levels, but this chip takes the 5 volt supply (from the Atari) and generates all the voltages needed. CONNECTOR INF}ORMATION: Most PC serial ports use a 9 pin connector known as a DB-9. The connector has male pins. Therefore, the connec}tor you put on your interface connector should be a DB-9F, with sockets. This is the view of the connector on the computer}. It is also the view of the rear of the DB-9F connector (the end you solder the wires to): 1 2 3} 4 5 6 7 8 9 The Atari serial port uses a specialized connector which I haven't found anywhere }else. Looking into the jack on the computer, it looks like this: 2 4 6 8 10 12 } 1 3 5 7 9 11 13 You can get the connector itself from Atari parts suppliers. However, I prefer to buy a}n I/O cord with connectors on both ends and cut it in half. Then you can use an ohmmeter to find out which wire is wire}d to which pin. 25 Pin Serial Port Connector: Many PC serial cards use a 25 pin connector instead o}f a 9 pin. Here are the equivalent pins if you have the 25 pin: DB-9 DB-25 2 } 3 3 2 5 7 7 4 9 } 22 PARTS LIST FOR SIO2PC KIT _____ 1 - BOX, /w LID, SCREWS (R.S. 270-220, 4 X 2 }X 7/8) _____ 4 - 22 uF ELECTROLYTIC CAPACITORS, 25 volt _____ 1 - 0.1 uF DISK CAPACITOR, 25 volt or mo}re. _____ 1 - INTEGRATED CIRCUIT, I.C. # 2 (ICL-232) _____ 1 - SIO CABLE & CONNECTOR (Atari I/O cable } cut in 1/2) _____ 1 - 5 CONDUCTOR CABLE _____ 1 - DB9F OR DB 25F CONNECTOR (as req'd for your PC) } _____ 1 - CONNECTOR HOOD _____ 1 - CIRCUIT BOARD (R.S. 276-150) _____ 6" BARE WIRE _____ } 6" INSULATED WIRE _____ 1 - 16 PIN IC SOCKET R.S. means Radio Shack. You can get most of the common stu}ff from there. I drill a hole in each end of the box and install grommets (from Radio Shack) in them. Then I feed both }cables thru the grommets before connecting them to the board. I put the board in the box component side down. Note: this} board is almost a perfect fit in this box, but actually is a bit snug. I take a file and trim 1/16" or so off the long} side before working on the board. Or, you can use the next larger size box. OTHER COMPONENT SUPPLIERS: The only sl}ightly difficult to find part is the ICL-232. You can get it (or the MAX-232) from: DIGI-KEY 701 Brooks Ave. South P.O.} Box 677 Thief River Falls, MN 56701-0667 800-344-4539 or 218-681-6674 or JAMECO ELECTRONICS 1355 Shore}way Road Belmont, CA 94002 415-592-8097 The above suppliers will also have the capacitors & connectors. For the A}tari I/O connector or cable I use: AMERICAN TECHNA-VISION 2098 Pike Avenue San Leandro, Calif. 94577 415-352-3787 Fo}r Atari parts, also see: B & C Computer Visions 3257 Kifer Road Santa Clara, CA 95051 408-749-1003 If you want, y}ou can contact me about parts. I'll currently supply a kit of all the parts listed plus drawings and instructions for }$30 plus $5 P & H. I'll build and test it for another $20. If you go this way, I don't expect additional "shareware" pa}yment for the software. DISCLAIMER/WARNING!!! As of this writing t}here are around 50 to 60 users of this software and interface, all having satisfactory results. However, unless you feel} comfortable with building circuits and interfacing computers, I don't recommend trying it without help. Likewise, erro}rs are possible in my above circuit description. I must insist that you assume all responsibility for equipment damage or p}ersonal injury if you decide to build and use my system. I recommend getting the data sheets for the chips and seeing for }yourself that the pin numbers I give match up with the mrgr's description. In general, the inputs and outputs of both} the Atari and the PC serial port are fairly resistant to damage from inadvertent grounding, connecting two outputs }together, etc. However, your system may turn out to be the delicate one. Note: the negative going output of the RS-232} port stands a good chance of DAMAGING any TTL input it is connected to. In other words, the RS-232 to TTL conversion p}erformed by the ICL-232 chip is absolutely necessary. On the software side, I have taken pains to ensure against damaging} your files. For instance, I only use DOS calls, I don't do any direct disk sector writes. But the PC is a complex bea}st, file outputs can be redirected, resident programs can clash in strange ways with TSRs, etc. So, please use this prog}ram at your own risk. If you're building it yourself, also see the KIT_G.TXT file for a detailed, wire by wire checkli}st of instructions. f you're building it yourself, also see the KIT_G.TXT file for a detailed, wire by wire checkli ASSEMBLING THE SIO2PC INTERFACE Thanks for deciding to build it yourself! A diagram of the circ}uit board is enclosed. It shows the top (component) side of the board. The other side is the "foil" side. In the drawi}ng there appears to be no space between adjacent copper pads from the IC pins. Of course, there really is, my printer }just isn't accurate enough. When in doubt, check the layout against the schematic diagram. Please read through all before }starting. Since this board is symmetrical, it's easy to get confused when you turn it over, and forget that you're look}ing at a mirror image of the top. I suggest marking "TOP" on one end, and marking IC pin #'s 1,8,9,& 16 on the board, bot}h sides. The first work item is to solder in the 16 pin IC socket. Orient the pin 1 identifier notch correctly. Yo}u may choose to put it more near the center of the board. Now, you should solder in the jumper wires. They are} shown as heavy lines. But note that the leads from the 4 electrolytic capacitors are also shown as heavy lines.} In places where no other wire could contact a jumper, I use bare wire, because I don't like stripping insulation. }Several jumpers are just extensions of the capacitor leads and you can usually make them reach with no jumper added. Note} that the foils really are close together and it's easy to create solder bridges. Use good light. I also inspect my wo}rk with a magnifying glass. (I started after a solder bridge gave me fits troubleshooting.) In cases where the board layout} is hard to follow, use the schematic diagram to confirm connections. Now, install the capacitors. }On the electrolytics, the minus lead is marked, and it is the shorter one. Yes, the places where the (+) lead of an elec}trolytic goes to ground and where the (-) lead goes to the +5 volt line are both correct! Now, It's time to p}lug the IC into its socket. There is a dimple or notch marking pin 1. Be sure to get pin 1 in the right place. You usuall}y must bend the pins in a bit to get them aligned for insertion. After installation, inspect closely for pins which} may have bent under instead of inserting. Now, wire the two connector cables to the board. FIRST PULL THEM THROUGH TH}E GROMMETS IN THE BOX. The Atari cable may have a larger grommet. You should grease the cable with some Vaselin}e, or friction may pull the grommet out. Note that the board is going to go into the box component side down, foil side }almost flush with the top. You also need to wire the PC's DB-9 connector per the pin #'s given and the diagram show}n looking at the end the cable solders to. The pin numbers are on the connector too, if you have real good eyes. You may} want to dress the wires to the appropriate length based on where they have to go on the board. Note that the green fr}om the Atari has to reach almost all the way to the other end. Cut back the extra wires in the Atari cable. Note that }on the PC cable, wire colors may vary. Cable: Wire: To: Atari: Violet IC-10 " Shiel}d PC cable shield " Black GND " Blue +5V " Orange junction of 4.7K* & diode " } Green IC-11 PC Shield Atari cable shield " Green IC-7 " Red GND " W}hite IC-13 " Black IC-14 TESTING: Plug the inte}rface into the Atari (not the PC, yet) as the only peripheral, and turn on the Atari. If you don't get the blue scree}n and "memo pad mode" message, turn if off and troubleshoot. If all is OK you might want to check voltages coming out of} the DB-9 connector. Using pin 5 as common: Pin 9 = 9v Pin 3 = ~0v Pin 2 = -9.4 Note that p}in 3 is an input and its reading has little meaning. Also, plus or minus a couple of volts on 9 and 2 is probably OK. }Now, go to your operating instructions and give it a try. If all is well, put it in the box and put on the lid. I sug}gest a turn or two of electrical tape around the ends of the cables to relieve strain and resist pull-out. If } you have trouble, you can check the 232's charge converter output: pin 2 should be about 10 volts to ground, and pin }6 at about -10 volts to ground. If this isn't the case, check the polarity of your capacitors. A leaky capacitor co}uld also be the culprit, or the ever popular "solder bridge." PARTS LIST FOR SIO2PC KIT } _____ 1 - BOX, /w LID, SCREWS _____ 4 - 22 uF ELECTROLYTIC CAPACITORS, 25 VOLT _____ } 1 - 0.1 uF DISK OR MONO* CAPACITOR _____ 1 - INTEGRATED CIRCUIT, I.C. (ICL-232 OR MAX-232) _____} 1 - SIO CABLE WITH CONNECTOR _____ 1 - 4 CONDUCTOR CABLE, SHIELDED _____ 1 - DB9 OR DB 25 }CONNECTOR, AS RQ'D FOR YOUR PC _____ 1 - CONNECTOR HOOD _____ 1 - CIRCUIT BOARD, RADIO SHACK 27}6-150 _____ 6" BARE WIRE _____ 6" INSULATED WIRE _____ 1 - 16 PIN IC SOCKET } _____ 1 - ASSEMBLY INSTRUCTIONS _____ 1 - CIRCUIT BOARD LAYOUT _____ 1 - SCHEMATIC DIAGRAM } _____ 1 - 4.7K - OHM RESISTOR _____ 1 - DIODE - BYV10-30 or 1N5817 * The MONO type capacitor looks like a resis}tor or diode & should be marked 0.1 or 104. Please check items received against this list. is{